  
/* Autores:
    Medina Ojosnegros, Javier
    Gutiérrez Rodríguez, David
*/

import java.util.Map;
import java.util.TreeMap;


public class Deposito {
 
    // Atributos
    private Map<Double, Integer> monedas = new TreeMap<Double, Integer>();      // Mapa con el valor de cada moneda y la cantidad de ellas que hay de cada tipo
    private double[] cantidades = new double[6];
    
    // Constructor
    public Deposito(){
        monedas.put(0.05, 100);
        monedas.put(0.10, 100);
        monedas.put(0.20, 100);
        monedas.put(0.50, 100);
        monedas.put(1.00, 100);
        monedas.put(2.00, 100);
    }
    
    // Métodos
    public boolean introducirMonedas(int[] importe)
    {
        monedas.put(0.05, monedas.get(0.05)+importe[0]);
        monedas.put(0.10, monedas.get(0.10)+importe[1]);
        monedas.put(0.20, monedas.get(0.20)+importe[2]);
        monedas.put(0.50, monedas.get(0.50)+importe[3]);
        monedas.put(1.0, monedas.get(1.0)+importe[4]);
        monedas.put(2.0, monedas.get(2.0)+importe[5]);
        
        return true;
    }
    
    
    public double calcularMonedas(double importe, double moneda)
    {
        boolean correcto=true;
        int cont=0;
        if (moneda != 2.0){
            while(importe>=moneda && correcto==true)  
            {
                if(monedas.get(moneda)<=0)
                {
                    correcto=false;
                }
                else
                {
                    int valor = monedas.get(moneda);
                    monedas.put(moneda, --valor);
                    cont++;
                    importe-=moneda;
                }
            }
        }
        
        boolean correcto2=true;
        int cont2=0;
        if (moneda == 2.0){  
            while(importe>moneda && correcto2==true)  
            {
                if(monedas.get(moneda)<=0)
                {
                    correcto2=false;
                }
                else
                {
                    int valor = monedas.get(moneda);
                    monedas.put(moneda, --valor);
                    cont2++;
                    importe-=moneda;
                }
            }
        }    
        
        if(moneda==0.05)
            cantidades[0]=cont;
        if(moneda==0.1)
            cantidades[1]=cont;
        if(moneda==0.2)
            cantidades[2]=cont; 
        if(moneda==0.5)
            cantidades[3]=cont; 
        if(moneda==1.0)
            cantidades[4]=cont; 
        if(moneda==2.0)
            cantidades[5]=cont2;
        
        return importe;
    }

    public double[] getCantidades() {
        return cantidades;
    }

    public void resetCantidades()
    {
        for (int i = 0; i < 6; i++) {
            cantidades[i]=0;
        }
    }
    
    @Override
    public String toString() {
        return "{ " +monedas.entrySet()+" }";
    }
    
    
}

